<?php

namespace app\admin\controller;

use app\common\controller\Backend;
use think\Db;
use app\admin\library\Auth;
/**
 * 
 *
 * @icon fa fa-question
 */
class Question extends Backend
{
    


    protected $noNeedLogin = ['getdata'];
    protected $noNeedRight = ['getdata','add','edit'];

    /**
     * Question模型对象
     * @var \app\admin\model\Question
     */
    protected $model = null;

    public function _initialize()
    {
        parent::_initialize();
        $this->model = new \app\admin\model\Question;
        $this->view->assign("qstatusList", $this->model->getQstatusList());
    }
    
    /**
     * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
     * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
     * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
     */
    

    /**
     * 查看
     */
    public function index()
    {
        //当前是否为关联查询
        $this->relationSearch = false;
        //设置过滤方法
        $this->request->filter(['strip_tags']);
        if ($this->request->isAjax())
        {
            //如果发送的来源是Selectpage，则转发到Selectpage

            if ($this->request->request('keyField'))
            {
                return $this->selectpage();
            }
            list($where, $sort, $order, $offset, $limit) = $this->buildparams();

            $id = $this->auth->id;
            $quanxian = Db::name('auth_group_access')->where('uid',$id)->find();
            if($quanxian['group_id']>2){
                $sql='adminid = '.$id;
            }else{
                $sql='id > 0';
            }
           

            $total = $this->model
                    ->where($sql)
                    ->where($where)
                    ->order($sort, $order)
                    ->count();

            $list = $this->model
                    ->where($sql)
                    ->where($where)
                    ->order($sort, $order)
                    ->limit($offset, $limit)
                    ->select();

            foreach ($list as $row) {
                $row->visible(['id','cid','qstatus','question','content','createtime']);
                
            }
            $list = collection($list)->toArray();
              foreach ($list as $key => $val) {
            	$list[$key]['link'] = $this->request->domain().'/index/gbook/index?id='.$val['cid'];
            }
            $result = array("total" => $total, "rows" => $list);
          

            return json($result);
        }
        return $this->view->fetch();
    }


     /**
     * 添加
     */
    public function add()
    {
        if ($this->request->isPost()) {
            // $params = $this->request->post("row/a");
            $params = $this->request->param();
            
            $content = $params['list'];

           
            if(!empty($params['cid'])){
            	$cate=Db::name('cate')->where('id',$params['cid'])->find();
            }
            if(!empty($cate)){
            	$num=0;
	            foreach ($params['list'] as $key => $val) {
	            	$data = array();
	            	
	            	$data['cid'] = $params['cid'];//栏目id
	            	$data['adminid'] = $this->auth->id;
	            	$data['question']=$val['name'];
	            	$data['qstatus']=$val['type'];
	            	// 
	            	if($data['qstatus']==2){
	            		// foreach ($val['dxt'] as $keyd => $vald) {
	            		// 	$data['list']=$vald['name'];
	            		// }
	            		// $data['list'] = serialize ($val['dxt']);
	            		$data['list'] = json_encode($val['dxt']);
	            	}
	            		//判断重复数据
	            		$cf = Db::name('question')->where($data)->find();
	            		if(!$cf){
	            			$data['createtime']=time();
			            	$res = Db::name('question')->insert($data);//插入数据库
			            	if($res){
			            		// return "ok";
			            		$num++;
			            	}
	            		}
            		
	            		
	            }
	            return $num;
	        }else{
	        	return "没有找到，请勿注入";
	        }




            // $data['content'] = $params

            /*[0] =&gt; array(5) {
			    ["question"] =&gt; string(7) "单选1"
			    ["radio"] =&gt; NULL
			    ["qstatus"] =&gt; int(2)
			    ["value"] =&gt; NULL
			    ["dxt"] =&gt; array(2) {
			      [0] =&gt; array(1) {
			        ["name"] =&gt; string(4) "列1"
			      }
			      [1] =&gt; array(1) {
			        ["name"] =&gt; string(4) "列2"
			      }
			    }
			  }
			  [1] =&gt; array(3) {
			    ["question"] =&gt; string(7) "输入1"
			    ["input"] =&gt; NULL
			    ["qstatus"] =&gt; int(1)
			  }*/
            // if ($params) {
            //     $params = $this->preExcludeFields($params);

            //     if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
            //         $params[$this->dataLimitField] = $this->auth->id;
            //     }
            //     $result = false;
            //     Db::startTrans();
            //     try {
            //         //是否采用模型验证
            //         if ($this->modelValidate) {
            //             $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
            //             $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate;
            //             $this->model->validateFailException(true)->validate($validate);
            //         }
            //         $result = $this->model->allowField(true)->save($params);
            //         Db::commit();
            //     } catch (ValidateException $e) {
            //         Db::rollback();
            //         $this->error($e->getMessage());
            //     } catch (PDOException $e) {
            //         Db::rollback();
            //         $this->error($e->getMessage());
            //     } catch (Exception $e) {
            //         Db::rollback();
            //         $this->error($e->getMessage());
            //     }
            //     if ($result !== false) {
            //         $this->success();
            //     } else {
            //         $this->error(__('No rows were inserted'));
            //     }
            // }
            $this->error(__('Parameter %s can not be empty', ''));
        }
        $cate = Db::name('cate')->where('adminid',$this->auth->id)->select();

        $this->view->assign('cate',$cate);
        return $this->view->fetch();
    }

    /**
     * 编辑
     */
    public function edit($ids = null)
    {
        $row = $this->model->get($ids);
        // if (!$row) {
        //     $this->error(__('No Results were found'));
        // }
        
        if ($this->request->isPost()) {
            // $params = $this->request->post("row/a");
            $params = $this->request->param();
            
            $content = $params['list'];

           
            if(!empty($params['cid'])){
            	$cate=Db::name('cate')->where('id',$params['cid'])->find();
            }
          
            if($cate){
            	$timeres = Db::name('question')->where('cid',$params['cid'])->field('createtime')->find();
    	  		$delres = Db::name('question')->where('cid',$params['cid'])->delete();


            	$num=0;

            
	            foreach ($params['list'] as $key => $val) {
	            	$data = array();
	            	/*
					————————————————————————————————————————————————————	先删除里面 id  然后再重新上传
	            	*/
	            	$data['cid'] = $params['cid'];//栏目id
                    $data['adminid'] = $this->auth->id;
	            	$data['question']=$val['question'];
	            	$data['qstatus']=$val['qstatus'];
	            	// 
	            	if($data['qstatus']==2){
	            		// foreach ($val['dxt'] as $keyd => $vald) {
	            		// 	$data['list']=$vald['name'];
	            		// }
	            		// $data['list'] = serialize ($val['dxt']);
	            		$data['list'] = json_encode($val['list']);
	            	}
	            		//判断重复数据
	            		// $cf = Db::name('question')->where($data)->find();
	            		// if(!$cf){
	            			$data['updatetime']=time();
	            			$data['createtime']=$timeres['createtime'];
			            	$res = Db::name('question')->insert($data);//插入数据库
			            	if($res){
			            		// return "ok";
			            		$num++;
			            	}
	            		// }
            		
	            		
	            }
	            return $num;
	        }else{
	        	return "没有找到，请勿注入";
	        }
        }
        // $adminIds = $this->getDataLimitAdminIds();
        // if (is_array($adminIds)) {
        //     if (!in_array($row[$this->dataLimitField], $adminIds)) {
        //         $this->error(__('You have no permission'));
        //     }
        // }
        // if ($this->request->isPost()) {
        //     $params = $this->request->post("row/a");
        //     if ($params) {
        //         $params = $this->preExcludeFields($params);
        //         $result = false;
        //         Db::startTrans();
        //         try {
        //             //是否采用模型验证
        //             if ($this->modelValidate) {
        //                 $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
        //                 $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
        //                 $row->validateFailException(true)->validate($validate);
        //             }
        //             $result = $row->allowField(true)->save($params);
        //             Db::commit();
        //         } catch (ValidateException $e) {
        //             Db::rollback();
        //             $this->error($e->getMessage());
        //         } catch (PDOException $e) {
        //             Db::rollback();
        //             $this->error($e->getMessage());
        //         } catch (Exception $e) {
        //             Db::rollback();
        //             $this->error($e->getMessage());
        //         }
        //         if ($result !== false) {
        //             $this->success();
        //         } else {
        //             $this->error(__('No rows were updated'));
        //         }
        //     }
        //     $this->error(__('Parameter %s can not be empty', ''));
        // }
        $catename = Db::name('cate')->where('id',$row['cid'])->find();
        $this->view->assign('catename',$catename);
        $this->view->assign('cate',$catename['id']);
        $list = Db::name("question")->where('cid',$row['cid'])->select();
        $this->view->assign("list", $list);
        $this->view->assign("cid", $row['cid']);
        // dump($list);
        // exit();
        $this->view->assign("row", $row);
        return $this->view->fetch();
    }


    public function getdata(){
    	 if ($this->request->isGet()) {
            // $params = $this->request->post("row/a");
            $params = $this->request->param();
            if(!empty($params['id'])){
            	$list = Db::name("question")->where('cid',$params['id'])->select();
        		// $this->view->assign("list", $list);
        		// foreach ($list as $key => $value) {
        		// 	# code...
        		// }
        		return json_encode($list);
            }
           }
    } 






}
